查看原文
其他

如何理性看待蚂蚁金服OceanBase刷新TPC-C纪录

数据和云 2024-03-03

The following article is from 老鱼笔记 Author 老鱼

OceanBase这几天霸屏朋友圈!


一派是浮夸的宣传,超越Oracle,世界第一,过度解读,全面否定对手,引起了技术圈内人士的反感,因为刷新TPC-C纪录并不能说明OceanBase现在就超越了Oracle。


另一派则是并不客观的质疑,不仅武断的认为OceanBase性能测试结果是靠硬件堆出来的,还臆测再测一次,Oracle拿第一不是难事,而且数字应该远不止两倍;其结论不仅缺乏证据,而且对分布式数据库和TPC-C标准缺乏基本了解,略有误导之嫌;


在以前的文章中,我就曾经说过,虽然,我们不能盲目崇信跑分,但跑分的确是一种比较直观反映软硬件性能的方式,尤其是数据库这种性能测试非常复杂的产品。


我们应该如何理性看待OceanBase刷新TPC-C纪录?我认为搞技术还是要讲究事实,要理性看待还原事实。



刷新TPC-C纪录NB吗?


每个数据库厂商都试图向客户证明自己的系统性能最好、处理能力最强,但数据库厂商各自的性能测试数据没有足够的说服力。


而TPC-C作为一个OLTP联机交易处理系统的benchmark是世界最权威的测试基准,这点相信数据库圈内人士没有异议,实际上,要想通过TPC-C并且拿到高分非常难,这是事实。


作为一个广泛接受的标准,TPC-C是严谨的并极大地杜绝了作弊。


TPC-C要求被测数据库必须满足数据库事务的ACID,即原子性、一致性、隔离性和持久性,其中隔离性为可串行化隔离级别,持久性要求能够抵御任何单点故障等。


其次,TPC-C规定被测数据库的性能(tpmC)与数据量成正比。


第三,TPC-C要求被测数据库能够以平稳的性能长期地运行。去掉启动预热(ramp up)和结束降速(ramp down)时间后,被测数据库至少要性能平稳地(steady state)运行8小时,其中性能采集时段(不少于2小时)内的性能累积波动不得超过2%。


第四,TPC-C要求被测数据库的写事务的结果必须在一定时间内数据落盘,对于具备checkpoint功能的数据库,checkpoint的间隔不得超过30分钟,checkpoint数据持久化的时间不得超过checkpoint间隔。


在国内,金融,电信,政府等行业POC都以TPC-C为性能测试基准,通过TPC-C,意味着拿到了这些企业的准入证明,刷新纪录则意味着商业化之路上竞争优势的提升。


因此,随着这些年在数据库技术上不断取得突破,越来越多的国内数据库厂商开始打榜TPC,在我看来是一种好事,凸显的是一种自信,同时也说明国产数据库与国外数据库之间的差距在缩小。


当然,要想全面超越Oracle,无论是OceanBase还是其它国产数据库,还有很长的路要走,超越不能靠YY,不要过分解读,但也不需要刻意低调。


2013年后为何打榜的数据库公司变少?


我认为有三个原因:


第一,这个时间点Oracle在市场上已经全面领先对手DB2;


第二,Oracle和DB2性能太强,导致其他玩家没机会进入前几名,直白的说,进不了前几名就得不到关注,测了也是白测;


第三,测试成本太高,要在完整的TPC-C测试中获得一个高分结果,需要高昂的硬件成本,这也是榜单大部分测试主导方是硬件厂商的原因;


TPC-C测试模型过时了吗?


TPC-C标准是1992年发布的,因此,成为一些人质疑的焦点。但TPC-C能成为数据库OLTP测试领域事实上的最权威标准,恰恰是因为它还原了企业需求真实的应用场景,极具代表性。

 

简单的说,TPC-C模拟了一个大型的在线商超业务模型,它有一个WEB站和分布在多个地域的仓库,每个仓库服务临近的10个区域的客户,每个客户通过一个收银点下单购买商品,有10%的可能这单订单里本地仓库无货需要远程调货,同时所有订单有后台异步的物流交付。结合当前,这个模型恰好就是现在的大型B2C电商网站。

 

所以,经典的测试模型并不过时,只是换了一种形式映射到现实生活。

 

另外TPC-C标准也并不是墨守陈规,从92年提出以来一直在不断修订,最新一版v5.11.0是2010年发布的。


堆硬件就可以跑出6000多万tpmC?


仔细研究TPC-C测试标准,就能很清楚的知道,TPC-C测试标准制定者已经提前预见到了这点,强制的分布式事务、数据访问应用透明要求等诸多限制,让通过简单的堆砌硬件就想提升性能的可能趋近于零。 


另外,数据库作为基础软件,目的就是要充分榨取底层硬件的性能并提供给上层应用,尤其对于分布式数据库来说,能够通过堆硬件带来线性性能提升更是理想的目标,分布式架构的精髓就是基于廉价的PC Server来做Scale Out。而这是TPC-C榜单中Oracle RAC这种架构无法解决的。


TPC-C测试结果应该怎么看?


TPC-C测试最终评价的标准其实就两个:整体性能tpmC以及性价比price/tpmC。


错误的质疑,源于并不清楚这2个核心指标,而是片面的关注总成本。


OceanBase总成本:380,452,842人民币,性能60,880,800 tpmC,性价比是每tpmC 6.25人民币。


Oracle总成本:30,528,863美元≈213,702,041人民币,性能30,249,688 tpmC,性价比是每tpmC 1.01美元≈7.07人民币


其实,总成本分为软件部分和硬件部分,我在向蚂蚁金服研究员、OceanBase主架构师杨传辉(日照)核实后确认,OceanBase的价格中,硬件部分占比约18%,Oracle的价格中硬件部分占比约76%。


OceanBase价格高是因为软件定价,其定价策略是,比Oracle低一点。


OceanBase真就完美吗?


企业级数据库的关键技术点在于可靠性和扩展性,TPC-C测试的前提是RPO为0确保不丢数据。


目前有三种实现方案:


第一种是IBM DB2,通过提升单机能力扩展,小型机不行就大型机,这种方案的问题在于价格和处理能力不是线性的;


第二种方案是共享存储,Oracle测试使用的RAC方案就是这种架构,这个架构的问题在于扩展能力有限,最大扩展到几十台机器;


第三种方案是分布式数据库,代表作是OceanBase和Spanner,这种方式基本做到了线性扩展,但需要存储多个副本。通过PAXOS协议强同步,存储成本翻倍,CPU使用也要往上翻。


这里凸显的是TPC-C科学的一面,不限制软件架构和硬件架构。


Oracle不支持PAXOS三机强同步,因此,无法采用和OceanBase一样的架构实现rpo为0,一定需要依赖共享存储来实现不丢数据。因此,在rpo为0的约束下,本质上OceanBase和Oracle只能使用不同的架构。


Oracle共享存储成本高,但硬件很可靠,只需要一个副本;OceanBase使用普通PC Server,单机成本低,但必须存储多个副本并打开在线压缩,这会大幅增加CPU和存储空间。


因此,如何选择,相信用户会有自己的判断力。


出处:老鱼笔记(laoyubiji)


另:想得到数据库最前沿的信息,来2019数据技术嘉年华,抓住这个国庆优惠的小尾巴,快来扫描下方图片抢先注册吧~





扩展阅读:2019年10月数据库流行度排行



数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!


资源下载

关注公众号:数据和云(OraNews)回复关键字获取

help,30万+下载的完整菜单栏

2019DTCC,数据库大会PPT

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

ENMOBK《Oracle性能优化与诊断案例》

DBALIFE,“DBA 的一天”海报

DBA04,DBA 手记4 电子书

122ARCH,Oracle 12.2体系结构图

2018OOW,Oracle OpenWorld 资料

产品推荐

云和恩墨BethuneX  企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!



云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。


云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群


请备注:云和恩墨大讲堂

继续滑动看下一个

如何理性看待蚂蚁金服OceanBase刷新TPC-C纪录

向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存